<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

// 构造concat函数：
// 连接两个或更多的数组，并返回结果，该方法不会对原数组产生影响
// 如果不填写参数，则复制原数组，产生一个新数组

function array_concat(arr){
    if(arr==undefined || arr.constructor!==Array) throw new Error("不是一个数组");
    var arr1=[];
    for(var i=0;i<arr.length; i++){
        arr1[i]=arr[i];
    }
    if(arguments.length===1) return arr1;
    for(var j=1;j<arguments.length;j++){
        if(arguments[j] && arguments[j].constructor===Array){
           for(var k=0; k<arguments[j].length;k++){
                arr1[arr1.length]=arguments[j][k]
           }
            
        }else
        arr1[arr1.length]=arguments[j];
    }
    return arr1;
}

var arr = [1,2,3,4]
var arr1 = array_concat(arr,1,2,3);
// var arr1 = array_concat(arr,[1,2,3]);
// var arr1 = array_concat(arr,1,2,3);
// var arr1 = array_concat(arr,[1,2,3],[4,5,6]);

console.log(arr1);

// 1-考虑到数组不存在情况
// 2-定义一个新数组，将其中一个数组先复制
// 3-当参数为1时，返回原数组
// 4-考虑第二个数组不存在情况
// 5-对数组元素进行遍历





    </script>
</body>
</html>